///////////////////////////////////////////
// COMMON.JS
///////////////////////////////////////////

function toMap( o ) { // convert js object in java map
	if( o==null ) return null;
	var map = new java.util.HashMap();
	for( m in o) { map.put(m,o[m]); }
	return map;
}

function toList( o ) { // convert js array in a java list 
	if( o==null ) return null;
	var list = new java.util.ArrayList();
	for( var i=0; i<o.length; ++i ) { list.add(o[i]); }
	return list;
}

function mapToObject( map ) {
	var result = [];
	if( map==null || map.isEmpty() ) return result;
	var i = map.keySet().iterator();
	while( i.hasNext() ) { var k = i.next(); result[k]=map.get(k); }
	return result;
}

function listToObject( list ) {
	var result = [];
	if( list==null || list.isEmpty() ) return result;
	for( var i = 0; i < list.size(); ++i ) { result[i]=list.get(i); }
	return result;
}



JSONObject	= Packages.it.softphone.commons.json.server.JSONObject;
JSONArray	= Packages.it.softphone.commons.json.server.JSONArray;


/**
 * native to JSON conversion
 * 
 * @param o
 * @returns
 */
function toJSON( o ) {

	if( o==null ) return null;
	
	if( typeof(o)==="object" ) {
	
		if( o instanceof Array ) {
		
			var r = new JSONArray();
			
			for( var i=0; i<o.length; ++i )  r.put( toJSON(o[i]) );
			
			return r;
		}
		else if( o instanceof Object ) {
		
			var r = new JSONObject();
			
			for( m in o ) r.put( m, toJSON(o[m]) );
			
			return r;
		
		}
		else {
			// Convert Java Object
			var r = new JSONObject();
			
			for( m in o )  {
				if( m=="class" ) continue;
				var v = o[m];
				if( typeof(v)==="function" ) continue;
				
				r.put( m, JSONObject.wrap(v) );
			}
			
			return r;
		
		}
		
	}
	else if( typeof(o)==="number" ) {
		return o;
	}
	else if( typeof(o)==="string" ) {
		return o;
	}
	
	return o;
}

